package com.wiscamp.ninechapters.tags.domain.repositories;

import com.wiscamp.ninechapters.tags.domain.models.Subject;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

import java.util.Collection;

public interface SubjectRepository {

    Subject getSubject(@Min(0) long subjectId);

    Subject getSubjectByCode(@NotBlank String subjectCode);

    Collection<Subject> getSubjectsByName(@NotBlank String subjectName);

    Collection<Subject> getAvailableSubjects();

    Subject saveSubject(@NotNull Subject subject);
}
